//
//  HomeViewController.swift
//  YYJWeibo
//
//  Created by yujing on 16/5/11.
//  Copyright © 2016年 yujing. All rights reserved.
//

import UIKit
/// 微博 Cell 可重用标识符
private let YJStatusCellID = "YJStatusCellID"
class HomeViewController: RootViewController {

    
    override func viewDidLoad() {
        
        // 设置刷新控件
        setupRefreshControl()
        
        super.viewDidLoad()

       //tableView.dataSource = self
        
        // 注册可重用 cell
        tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: YJStatusCellID)
        
        // 设置访客视图信息 - 如果用登录成功，访客视图为 nil，什么也不做！
        visitorView?.setupInfo(message: "关注一些人，回这里看看有什么惊喜")

    }

    // 当收到内存警告
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        
        print("Home 的 window \(self.view.window)")
        
        if self.view.window == nil {
        
            // 清理数组
            self.dataList .removeAll()
            
            // 刷新数据
            self.tableView .reloadData()
        }
    }
    override func loadData() {
        
        // 默认起始索引值
        let defaultIndex = 100
        
        // 判断是否是上拉 如果上拉刷新动画启动，就认为是上拉刷新
        let isPullup =  refreshControl.isPullupRefresh
        
        // 显示刷新控件
        refreshControl.beginRefreshing()
        
        // 加载数据
       // 模拟异步加载数据
        dispatch_async(dispatch_get_global_queue(0, 0)) {
            
            
            NSThread.sleepForTimeInterval(2)
            
            // 下拉刷新索引,获取数组的 第0条 数据数值
            let pullDownIndex = self.dataList.first ?? defaultIndex
            // 上拉索引，获取数组的 最后一条记录数值
            let pullUpIndex = self.dataList.last ?? 0
            
            // 如果上拉，顺序加载数据，如果下拉，倒序
            var arrayM = [Int]()
            if isPullup {// 上拉
                for i in 0..<10 {
                    arrayM.append(pullUpIndex - i - 1)
                }
            
            }else{// 下拉
                // 模拟网络一次加载的数据
                for i in (0..<10).reverse() {
                    arrayM.append(i + pullDownIndex + 1)
                }
            }
            
            // 上拉刷新，将数据追加到数组末尾
            if isPullup {
                
                self.dataList += arrayM
            }else{
                // 下拉刷新要插入到现有 dataList 的前面
                self.dataList = arrayM + self.dataList
            }

            // 更新UI
            dispatch_async(dispatch_get_main_queue(), { 
                
                // 关闭刷新
                self.refreshControl.endRefreshing()
                // 刷新数据
                self.tableView.reloadData()
                
            })
            
        }

    }
    
    // MARK: 私有属性
    private lazy var dataList = [Int]()
    
}

extension HomeViewController {

    // 重写数据源方法
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
        
        return self.dataList.count
        
    }
    
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
        
        let cell = tableView.dequeueReusableCellWithIdentifier(YJStatusCellID, forIndexPath: indexPath)
        
        cell.textLabel?.text = self.dataList[indexPath.row].description
        
        return cell
        
    }


}